﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
using namespace std;

//1.操作系统是什么？
 
//1.1概念
//操作系统是一款做软硬件管理的软件

//1.2操作系统的层次
//操作系统位于应用软件之下，设备驱动和硬件之上
//所以，任何行为都要贯穿操作系统

//   应用软件 ：word，matlab等
//   操作系统：windos，Linux等
//   设备驱动：驱动硬件，例如：声卡驱动等
//   硬件：cpu、内存、磁盘、显示器、键盘等

//1.3操作系统的核心工作
//通过对象管理好软硬件资源的手段，达到对上提供良好的（稳定、快速、安全）的操作/使用环境


//2.Linux基本指令

//首先对文件的认识：
//（1）一个文件声明都不写，那么放在磁盘中会占用空间吗？
//答案是一定会的，因为文件不止有文件内容，文件还有属性等信息需要存储
//（2）所以：文件=文件内容+文件属性
//（3）文件的操作=对文件内容的操作+对文件属性的操作
//（4）文件的类型：
//d：开头的是一个目录
//-开头的：是一个普通文件
//而在Linux中，以 . 开头的文件，我们成为隐藏文件

//2.1 ls指令
//语法： ls[选项][目录或文件]
//功能：对于目录，该命令列出该目录下的所有子目录与文件。对于文件 ，将列出文件名以及其他信息
//ls命令后的选项和目录文件都可以没有
//单独一个ls表示显示该文件夹下所有的文件名属性


//常用选项：
//重点选项（1）
//• - l 列出文件的详细信息（每一行的会输出每个文件的属性）【ls -l等价于ll】 
//• - a 列出目录下的所有文件，包括以 . 开头的隐含文件
//• - d 将目录像文件一样显示，而不是显示这个目录里面的文件。 如：ls ‒d 目录名
//• - F 在每个文件名后附上一个字符以说明该文件的类型，“ * ”表⽰可执⾏的普通文件；“ / ”表⽰
//目录；“@”表⽰符号链接；“ | ”表⽰FIFOs；“ = ”表⽰套接字(sockets)。（目录类型识别）
//重点选项（2）
//• - i 输出文件的 i 节点的索引信息。 如 ls ‒ai 指定文件
//• - k 以 k 字节的形式表⽰文件的大小。ls ‒alk 指定文件
//• - n 用数字的 UID, GID 代替名称。 （介绍 UID， GID）
//• - r 对目录反向排序
//• - t 以时间排序
//• - s 在l文件名后输出该文件的大小。（⼤⼩排序，如何找到⽬录下最大的文件）
//• - R 列出所有子目录下的文件(递归)
//• - 1 一行只输出一个文件

//注意：
//1.使用指令时，可以几个指令一起使用，比如：ls -a -l(也可以写成ls -al或者ls -la)
//2.Lnux下，任何一个目录下都有两个隐藏文件. 和..
//3..和..都表示什么：..表示当前路径的上级路径， .表示当前路径
//4. .存在的意义：帮助用户定义当前目录下的一个文件

//2.2 pwd命令

//语法: pwd 
//功能：显示用户当前所在的目录
//常用选项：无
//举例：
// ubuntu@VM - 24 - 16 - ubuntu:~$ pwd
// / home / ubuntu


//2.3 mkdir指令

//语法： mkdir [选项] dirname...
//功能：在当前目录下创建⼀个名为“dirname”的目录
//常⽤选项：
//• - p / --parents:可以是⼀个路径名称。此时若路径中的某些目录尚不存在, 加上此选项后, 系统将⾃
//动建立好那些尚不存在的⽬录, 即⼀次可以建立多个目录

//例如：
//创建多个路径：mkdir -p test1/test2


//2.4 cd指令

//语法:cd ⽬录名 
//功能：改变工作目录。将当前工作目录改变到指定的目录下

//注意：
//（1） cd ..：回退至上一个目录
//（2）cd ../day02/:相对路径
//（3）cd /home/tu/jay:绝对路径
//（4）cd ~ :用户直接回到自己的家目录下（登陆时的目录）
//（5）cd-：回到我上一次所进入的路径


//2.5touch指令

//语法: touch [选项]... 文件... 
//功能：touch命令参数可更改文档或目录的日期时间，包括存取时间和更改时间，或者新建⼀个不存在
//的文件。
//常用选项：
//• - a: change only the access time 
//• - c: change only the modification time 


//2.6rmdir指令 && rm指令

//2.6.1 rmdir指令（只能删除非空的目录）
//rmdir是⼀个与mkdir相对应的命令，mkdir是建立目录，而rmdir是删除命令
//语法： rmdir[-p][dirName]
//适用对象：具有当前目录操作权限的所有使用者
//功能：删除空目录
//常用选项：
//• - p 当子目录被删除后如果父目录也变成空目录的话，就连带父目录⼀起删除。


//2.6.2 rm指令
//rm命令可以同时删除文件或目录
//语法： rm[-f - i - r - v][dirName / dir]
//适用对象：所有使用者
//功能：删除文件或目录
//常用选项：
//• - f 即使文件属性为只读(即写保护)，亦直接删除
//• - i 删除前逐一询问确认
//• - r 删除目录及其下所有文件

//注意：
// （1）rm不能直接删目录，要删目录就要加上-r，例如:rm -r [文件名]
// （2）强制删除：rm -r -f


//3.Linux下的文件路径

//• 在Linux下，表明路劲时，一定会用/做分割，/就叫路径分隔符
//• 在Linux中，使用cd..的指令一直回退，知道回退至最后的一个/时，这个/就是Linux的根目录
//• 使用ls -ld查看根目录，可以发现根目录是以d开头的，说明根目录是一个目录
//那么目录里可以继续存其他的文件，也就是说，Linux中的目录结构整体是一个多叉树，它的叶子节点一定是
//空目录或者非目录文件，路上节点一定时非空目录
//• Linux系统中，磁盘上的文件和目录被组成⼀棵目录树，每个节点都是目录或文件
//• 其中普通文件⼀定是目录树的叶子节点
//• 目录可能是叶子(空目录), 也可能是路上节点
//• 理解路径存在的意义 : 树状组织方式，都是为了保证快速定位查找到指定的文件，而定位文件就
//需要具有唯一性的方案来进⾏定位文件。其中任何一个节点，都只有一个父节点，所以，从根⽬
//录开始，定位指定文件，路径具有唯一性
//• 绝对路径：一般从 / 开始，不依赖其他目录的定位文件的⽅式
//• 相对路径：相对于当前用户所处目录，定位文件的路径
//• 绝对路径一般不会随着用户的路径变化而丧失唯一性，一般在特定服务的配置文件中经常被使用
//• 如果我们做出的路径发生变化，那么相对路径就失效了 
//• 相对路径因为它的便捷性，⼀般在命令行中使用较多



